<?php

namespace app\common\model;

use think\Model;

class UserVoucher extends Model
{
    // 表名
    protected $name = 'user_voucher';
    
    // 自动写入时间戳字段
    protected $autoWriteTimestamp = 'int';
    
    // 定义时间戳字段名
    protected $createTime = 'createtime';
    protected $updateTime = 'updatetime';
    
    // 追加属性
    protected $append = [
        'status_text',
        'expire_time_text'
    ];
    
    // 状态获取器
    public function getStatusTextAttr($value, $data)
    {
        $status = [
            0 => '未使用',
            1 => '已使用',
            2 => '已过期'
        ];
        return isset($status[$data['status']]) ? $status[$data['status']] : '';
    }
    
    // 过期时间获取器
    public function getExpireTimeTextAttr($value, $data)
    {
        return $data['expire_time'] ? date('Y-m-d H:i:s', $data['expire_time']) : '';
    }
    
    // 关联用户
    public function user()
    {
        return $this->belongsTo('User', 'user_id', 'id');
    }
    
    // 关联会员订单
    public function vipOrder()
    {
        return $this->belongsTo('VipOrder', 'vip_order_id', 'id');
    }
    
    // 获取可用老师列表
    public function getTeachers()
    {
        if(empty($this->teacher_ids)) {
            return [];
        }
        $teacherIds = explode(',', $this->teacher_ids);
        return User::where('id', 'in', $teacherIds)
            ->where('is_teacher', 1)
            ->field(['id', 'nickname', 'avatar'])
            ->select();
    }
}